משוואות רקורסיביות הגדרה: רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים למשל: T = Θ 1 if = 1 T + Θ if > 1 יונתן יניב, דוד וייץ 1
דוגמא נסתכל על האלגוריתם הבא למציאת האיבר המקסימלי במערך לא ממויין A, אינדקס התחלת החיפוש ו t את אינדקס סוף החיפוש כאשר h מציין את Max(h,t) if (h == t) retur A[t]; else { m = (h + t) / ; M1 = Max(h,m-1); M = Max(m,t); retur (M1 > M)? M1 : M; } מה סיבוכיות זמן הריצה של האלגוריתם? נבנה משוואה רקורסיבית T אשר תתאר את זמן הריצה של האלגוריתם, כאשר מציין את גודל המערך: T = c 1 = 1 T + c > 1 = t h + 1
שיטות לפתרון רקורסיות השיטה האינדוקטיבית שיטת האיטרציות 1 עצי רקורסיה 3 שיטת ה Master החלפת משתנים )תרגול הבא( 4 3
1 השיטה האינדוקטיבית הוכחת חסמים אסימפטוטיים )Θ,O(,Ω עבור משוואות נסיגה באמצעות אינדוקציה השיטה נועדה למקרים בהם נרצה לוודא השערה עבור חסם אסימפטוטי קבועי חסם אסימפטוטי ( 0,c( מתאימים יתגלו במהלך ההוכחה דוגמא 1 T = 1 = 1 T + > 1 ננסה להוכיח: T = O log T c log מתקיים: 0 c, 0 > 0 כלומר, נרצה למצוא קבועים כך שלכל נוכיח זאת באינדוקציה 4
דוגמא 1 T = 1 = 1 T + > 1 נרצה להראות שקיימים > 0 0,c עבורם הטענה הבאה מתקיימת: טענה: לכל 0 מתקיים T c log T k נראה תחילה את צעד האינדוקציה: הנחת האינדוקציה: הטענה נכונה עבור, כלומר: c k log k = k צעד: נפעיל את הנחת האינדוקציה על ההגדרה הרקורסיבית: T c log + = c log 1 + = = c log c + c log אי השוויון האחרון נכון כאשר 1 c 5
על אינדוקציה ובחירת הבסיס בשקף הקודם הראינו את צעד האינדוקציה הבא: כלומר, אם הטענה מתקיימת עבור, היא מתקיימת עבור נניח והצלחנו להראות שהבסיס נרצה להראות שהטענה מתקיימת לכל 1 = 1 מתקיים מדוע זה מספיק בשביל להוכיח את הטענה? באמצעות בסיס 1 לפי צעד האינדוקציה, הטענה מתקיימת עבור אם היא מתקיימת עבור והצעד שהוכחנו )כלומר, ) הטענה מתקיימת עבור אם היא מתקיימת עבור נמשיך כך עד שנגיע לערך עבורו הטענה מתקיימת, כלומר בסיס האינדוקציה 1 1 הטענה המקורית נכונה כי לכל 1 ניתן לבנות סדרת הוכחה כנ"ל אשר תגיע לבסיס 1 6
חזרה לדוגמא 1 T = 1 = 1 T + > 1 T c log : 1 = T 1 c 1 log 1 = 0 בסיס האינדוקציה: ננסה להוכיח את הטענה עבור = 1 כדי לעקוף בעיה זו, נזכר כי הניתוח שאנו מבצעים הוא אסימפטוטי זאת אומרת, אנו צריכים למצוא > 0 0 שהחל ממנו הטענה מתקיימת ניסיון 1: ניקח כבסיס האינדוקציה את = 4 = T c log עבור c מתקיים: האם זה מספיק על מנת להוכיח את הטענה? לא! לא ניתן להראות סדרת הוכחה עבור T 3 1 3 7
חזרה לדוגמא 1 T = 1 = 1 T + > 1 = 3 ניקח כבסיס האינדוקציה את = וגם את ניסיון : 4 = T c log עבור c מתקיים: 5 = T c 3 log 3 כעת, ניתן להשתמש בהוכחה האינדוקטיבית על מנת להראות את הטענה לכל לכן, אם נבחר = 0 c =, הטענה תתקיים 1 3 4 5 6 7 8
דוגמא T = 1 = 1 T + > 1 T c מה יקרה אם ננסה להוכיח: T = O כלומר, שקיימים > 0 0 c, כך שלכל 0 מתקיים ננסה להוכיח את טענת הסגור: T c + c + = c + 1 = O() יש להוכיח את טענת הסגור במדויק! 1 log גדל c ה"קבוע" כאן, בסדרת ההוכחה עבור פעמים ב +1 +1 +1 +1 1 9
דוגמא 3 T = 1 = 1 T + T + 1 > 1 T c מתקיים 0 צריך להראות: T = O כלומר, שקיימים > 0 0 c, כך שלכל T k c k k 1 ננסה להוכיח את טענת הסגור: הנחת האינדוקציה: עבור מדוע הנחה זו מותרת? מתקיים בהינתן שכבר הוכחנו נכונות עבור 1 k נוכל באמצעות הצעד להרחיב את הטענה ל +1 לאחר מכן, בהינתן נכונות עבור k נוכל להרחיב את הטענה עבור + 1 וכן הלאה 1 1 + 1 10
דוגמא 3 T = 1 = 1 T + T + 1 > 1 T c + c T k c k הנחת האינדוקציה: עבור 1 k + 1 = c + 1 צעד : חסם זה אינו מוכיח כי T c במקרים רבים הבעיה היא שהנחת האינדוקציה אינה חזקה מספיק במקרה זה, מחסירים איבר מסדר נמוך יותר מהניחוש ההתחלתי T c b + c ננסה להוכיח שמתקיים : T c b b + 1 = c b + 1 c b b 1 11
שיטת האיטרציות אין צורך לדעת מראש את הפתרון פותחים ביטוי רקורסיבי כסכום של איברים שתלויים ב ובתנאי ההתחלה בלבד דוגמא מה מספר האיטרציות שנצטרך לבצע עד שנגיע לתנאי ההתחלה? 1
שיטת האיטרציות אין צורך לדעת מראש את הפתרון פותחים ביטוי רקורסיבי כסכום של איברים שתלויים ב ובתנאי ההתחלה בלבד דוגמא 13
עצי רקורסיות דרך נוחה להציג ביטוי רקורסיבי אשר פותחים אותו, בדומה לשיטת האיטרציות דוגמא 1: 14
עצי רקורסיות דרך נוחה להציג ביטוי רקורסיבי אשר פותחים אותו, בדומה לשיטת האיטרציות דוגמא : 15
3 שיטת המאסטר 1 a ו 1 b קבועים f() פונקציה T = a T b + f() מוגדרת על שלמים אי שליליים ע"י הרקורסיה T() ניתן לחסום את T() אסימפטוטית באופן הבא: כאשר > 0 ε קבוע כלשהו, 1 אם ) ε f = O( log b a אזי ) a T = Θ( log b אם ) a f = Θ( log b T אזי = Θ log b a log ε > 0 3 אם ) ε f = Ω( log b a + וגם כאשר קבוע עבור קבוע כלשהו, והחל מ- מספיק גדול אזי c < 1 a f b c f() T = Θ(f()) b b b הערה: המשמעות של יכולה להיות או 16
3 שיטת המאסטר 17
3 שיטת המאסטר 18